package cn.agrael.util;

import java.io.Serializable;
import java.util.Map.Entry;

/**
 * 维护不可变的键和值的 Entry。此类不支持 setValue 方法。
 * 
 * @author <a href="mailto:agraellee@gmail.com">Agrael·Lee</a>
 * 
 * @param <K> 键类型
 * @param <V> 值类型
 */
public class DefaultImmutableEntry<K, V> extends DefaultEntry<K, V> implements Entry<K, V>, Serializable {

	/** 版本号 */
	private static final long serialVersionUID = 899489452204388612L;

	/**
	 * 创建一个项，它表示的映射关系与指定的项相同。
	 * 
	 * @param entry 要复制的项
	 */
	public DefaultImmutableEntry(Entry<? extends K, ? extends V> entry) {
		super(entry);
	}

	/**
	 * 创建一个项，它表示从指定键到指定值的映射关系。
	 * 
	 * @param key 此项所表示的键。
	 * @param value 此项所表示的值。
	 */
	public DefaultImmutableEntry(K key, V value) {
		super(key, value);
	}

	/**
	 * 该方法始终抛出 UnsupportedOperationException。
	 */
	public V setValue(V value) {
		throw new UnsupportedOperationException();
	}
}
